**************************************************************** wm_close.exe **************************************************************** tool to close any program as long as it responds to the wm_close API call, to use it call it with the window class or window name as parameter, it will 1st try to locate a window wich has the given parameter as class name, if that fails it will try to locate a window with the given parameter as name. **************************************************************** mbm5msg.exe **************************************************************** tool to send a message to mbm, starting it with one of the switches below will make it send that message to mbm. 0 WM_WRITELH 1 WM_OPENSETTINGS 2 WM_OPENDASHBOARD 3 WM_OPENHELP 4 WM_CLOSEMBM 5 WM_CLOSEOSD 6 WM_OPENOSD 7 WM_DUMPISA 8 WM_DUMPSMB 9 WM_DUMPPCI 10 WM_VIADUMP **************************************************************** mbmstarter.dll **************************************************************** This may ONLY be distributed and used by programs that are fully FREEWARE, you are NOT ALLOWED to use this DLL with shareware, payware or commercial programs. now that the legal part is out of the way, with this dll you can launch the mbm.dll without using mbm, of course you must have configured mbm correctly if you want this to work correctly. Once the mbm.dll is running you freeware program can access the sharedmemory like normal the delphi code to start the dll is like this: type TStartDLL = function : Integer; stdcall; TStopDLL = function : Integer; stdcall; var Form1: TForm1; CStartDLL : TStartDLL; CStopDLL : TStopDLL; DLLHandle : THandle; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var X : Integer; begin if DLLHandle=0 then begin DLLHandle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'MBMStarter.dll')); if DLLHandle <> 0 then begin @CStartDLL:=GetProcAddress(DLLHandle, 'Start'); X:=CStartDLL; if X <> 1 then Showmessage('Error Starting MBM.DLL, Error : '+IntToStr(X)) else Showmessage('MBM.DLL Started') ; end else Showmessage('Error Loading StarterDLL'); end; end; procedure TForm1.Button2Click(Sender: TObject); begin if DLLHandle<>0 then begin @CStopDLL:=GetProcAddress(DLLHandle, 'Stop'); CStopDLL; FreeLibrary(DLLHandle); DLLHandle:=0; Showmessage('Starter DLL unloaded'); end; end; the mbm5starter.dll will always created a sub dir called dll and copy the mbm.dll into this directory, this is needs to be done and can not be avoided as of version > 5.3.5.0 there are 2 new function: function SetPrio(X : Byte) : Boolean; stdcall; function SendPath(Path : Pchar) : Boolean; With SetPrio you can increase the priority of the timer loop in the dll, use the following table: 0: Idle 1: Lowest 2: Lower 3: Normal 4: Higher 5: Highest 6: TimeCritical With SendPath you can send a new path to the dll in case it has no access to HKEY_CURRENT_USER, if you get a result of 0 back then this is your problem, send your new path BEFORE you do the start function. The path should contain the base directory of MBM **************************************************************** mbm 5.ini **************************************************************** This is a clean version of the MBM 5.ini file, if you ever get into troubles then simply close mbm and copy this OVER the version in the /data directory and you can start clean. **************************************************************** uninstall problems.bat **************************************************************** If your having errors uninstalling which included INSTALL.LOG then please run this batch file, it should start the uninstaller without problems